/* Copyright (c) Microsoft Corporation                                       */
/*                                                                           */
/* All rights reserved.                                                      */
/*                                                                           */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may   */
/* not use this file except in compliance with the License.  You may obtain  */
/* a copy of the License at http://www.apache.org/licenses/LICENSE-2.0       */
/*                                                                           */
/* THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS     */
/* OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION      */
/* ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR   */
/* PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.                              */
/*                                                                           */
/* See the Apache Version 2.0 License for specific language governing        */
/* permissions and limitations under the License.                            */
/*                                                                           */
#pragma once

/*
#include "netinet/in.h"
*/

#include "malloc_factory.h"
#include "zftp_hash_lookup_protocol.h"
#include "ZNameRecord.h"
#include "unistd.h"

class ZLookupServer;

class ZLookupRequest {
public:
	ZLookupRequest(
		ZLookupServer *zlookup_server,
		UDPEndpoint *remote_addr,
		uint8_t *bytes,
		uint32_t len,
		MallocFactory *mf);
	~ZLookupRequest();

	bool parse();
	void deliver_reply(ZNameRecord *znr);

public:
	ZLookupServer *zlookup_server;
	socklen_t fromlen;
	UDPEndpoint remote_addr;
	uint8_t *bytes;
	uint32_t len;

	ZFTPHashLookupRequestPacket *zhlrp;
	uint32_t nonce;
	uint16_t url_hint_len;
	char *url_hint;

private:
	MallocFactory *mf;
};


